#ifndef MATH_UTILS_H  // 防止头文件重复包含
#define MATH_UTILS_H

#include <stdio.h>
#include <stdbool.h>
#include <time.h>  // 包含 time_t 所需的头文件

//#include "pass_time.h"

#define MAX_USERS 250 //最大用户数量
#define FILENAME "./data/files/members.dat"
typedef enum{
        times_card, //次卡
        month_card, //月卡
        year_card, //年卡
}MemberType;

typedef struct{
	int year;
	int month;
	int day;
}Date;

typedef struct{ 
        char card_id[5];//卡号
        char user_id[6]; //用户ID
        char name[30];  //姓名
        char gender; //性别(M/F)
        Date birthday; //生日
        char phone[11]; // 手机号
        Date register_date; //注册时间
        MemberType type; //会员类型：年卡、月卡、次卡（0、1、2）
	int delete_state;     // 删除状态，0 表示未删除，1 表示已删除
	time_t register_timestamp;//注册时间戳
	time_t expire_timestamp;//过期时间戳
	int remaining_times; //次卡剩余次数
} Member;

//全局变量
extern Member users[MAX_USERS]; //用户数量
extern int user_count ; //当前用户数量

// 声明函数（extern 可写可不写，默认就是 extern 的）
//static unsigned int get_new_min(void)//自动获取用户ID
void save_to_file();
void load_from_file();

void user_reg();//增
void user_del(void);//删
void user_mod(void);//改
void user_allsea(void);//查询所有用户信息

void search_member(); //查询主菜单
void search_by_card_id();//根据卡号查询
void search_by_user_id(); // 根据用户ID查询
void search_by_phone(); // 根据手机号查询
void display_member_info(const Member *p); //查询单个用户信息

int is_member_expired(const Member *member); // 检查会员是否过期
void display_expire_info(const Member *member); // 显示会员过期信息
void times_card_swipe(); // 次卡刷卡功能
Date get_current_date(void); //获取时间
#endif
